package controller.states;

import event.numberevent.StateNumber;

/**rappresenta una classe che lavora con lo stato di inserimento nuovo oggetto nella
 * mappa. Una classe del genera eredita l'attributo {@link #mapElementToAddState} 
 * nonche' tutti i suoi valori di default (come {@link #MAPELEMENTCHOOSEN}, {@link #CLASSADDED} o {@link #ONLYRENDERER})
 * 
 * @author koldar
 * @version 1.2
 */
public interface MapElementToAddStateUser {
	
	/**indica il valore iniziale che assume la macchina a stati all'inizio dell'applicazione
	 * 
	 */
	public int INITSTATE=16;
	/**indica lo stato che il numero-stato deve assumere se l'utente ha scelto
	 * la classe da inserire dentro il Display
	 */
	public static final int MAPELEMENTCHOOSEN=10;
	/**indica lo stato che il numero-stato deve assumere se l'utente non 
	 * ha ancora scleto la classe da inserire dentro il Display
	 */
	public static final int START=11;
	/**l'utente ha scelto soltanto il Renderer del Background/Foreground da inserire
	 * 
	 */
	public static final int ONLYRENDERER=13;
	/**l'utente ha scelto soltanto il Conceptdel Background/Foreground da inserire
	 * 
	 */
	public static final int ONLYCONCEPT=14;
	
	/**l'utente, una volta nello stato {@link #MAPELEMENTCHOOSEN}, cambia il renderer ed il concept aggiornando
	 * così i valori
	 * 
	 */
	public int MAPELEMENTUPDATED=15;
	
	/**indica lo stato dell'utente: questo stato puo' essere:
	 * <ul>
	 *  <li>{@link #START}</li>
	 *  <li>{@link #ONLYRENDERER}</li>
	 *  <li>{@link #ONLYCONCEPT}</li>
	 *  <li>{@link #MAPELEMENTCHOOSEN}</li>
	 *  <li>{@link #MAPELEMENTUPDATED}</li>
	 * </ul>
	 */
	public StateNumber<Integer> mapElementToAddState=new StateNumber<Integer>(INITSTATE);
}
